// 斐波那契数列计算（优化版本）
function fibonacci(n) {
  if (n <= 1) return n;
  let a = 0, b = 1;
  for (let i = 2; i <= n; i++) {
    [a, b] = [b, a + b];
  }
  return b;
}

// 质数计算（优化版本）
function findPrimes(n) {
  const sieve = new Array(n + 1).fill(true);
  sieve[0] = sieve[1] = false;
  
  for (let i = 2; i <= Math.sqrt(n); i++) {
    if (sieve[i]) {
      for (let j = i * i; j <= n; j += i) {
        sieve[j] = false;
      }
    }
  }
  
  return sieve.reduce((primes, isPrime, index) => {
    if (isPrime) primes.push(index);
    return primes;
  }, []);
}

// 数组排序（优化版本）
function sortArray(arr) {
  return arr.sort((a, b) => a - b);
}

// 监听消息
self.onmessage = function(e) {
  const startTime = performance.now();
  let result;

  switch (e.data.type) {
    case 'fibonacci':
      result = fibonacci(e.data.input);
      break;
    case 'prime':
      result = findPrimes(e.data.input);
      break;
    case 'sort':
      const arr = Array.from({ length: e.data.input }, () => Math.floor(Math.random() * 1000));
      result = sortArray(arr);
      break;
    default:
      result = '未知任务类型';
  }

  const endTime = performance.now();
  
  self.postMessage({
    result: result,
    time: Math.round(endTime - startTime)
  });
}; 